From f2ba6ca47322a17b37fb92662fc9552b4f106f10 Mon Sep 17 00:00:00 2001 From: Takao Fujiwara Date: Sat, 10 Sep 2016 01:54:13 +0900 Subject: [PATCH] gdkscreen-x11: Enable RandR on VirtualBox RandR 1.5 is enabled on VirtualBox guest of Fedora 25 but XRROutputInfo->name is "default". If init_randr15() does not return TRUE, the monitor size sets 0 because gdk_screen_get_width() returns 0. This problem causes GtkStatusIcon not to show the activate menu. https://bugzilla.gnome.org/show_bug.cgi?id=771033 --- gdk/x11/gdkscreen-x11.c | 35 ++--------------------------------- 1 file changed, 2 insertions(+), 33 deletions(-) diff --git a/gdk/x11/gdkscreen-x11.c b/gdk/x11/gdkscreen-x11.c index c189053c92..450872d99d 100644 --- a/gdk/x11/gdkscreen-x11.c +++ b/gdk/x11/gdkscreen-x11.c @@ -407,7 +407,6 @@ init_randr15 (GdkScreen *screen, gboolean *changed) RROutput primary_output = None; RROutput first_output = None; int i; - gboolean randr12_compat = FALSE; XRRMonitorInfo *rr_monitors; int num_rr_monitors; int old_primary; @@ -452,9 +451,6 @@ init_randr15 (GdkScreen *screen, gboolean *changed) if (output_info == NULL) continue; - /* Non RandR1.2+ X driver have output name "default" */ - randr12_compat |= !g_strcmp0 (output_info->name, "default"); - if (output_info->connection == RR_Disconnected) { XRRFreeOutputInfo (output_info); @@ -534,19 +530,6 @@ init_randr15 (GdkScreen *screen, gboolean *changed) XRRFreeMonitors (rr_monitors); XRRFreeScreenResources (resources); - /* non RandR 1.2+ X driver doesn't return any usable multihead data */ - if (randr12_compat) - { - for (i = 0; i < x11_display->monitors->len; i++) - { - GdkX11Monitor *monitor = x11_display->monitors->pdata[i]; - if (monitor->remove) - gdk_display_monitor_removed (display, GDK_MONITOR (monitor)); - } - g_ptr_array_remove_range (x11_display->monitors, 0, x11_display->monitors->len); - return FALSE; - } - for (i = x11_display->monitors->len - 1; i >= 0; i--) { GdkX11Monitor *monitor = x11_display->monitors->pdata[i]; @@ -609,7 +592,6 @@ init_randr13 (GdkScreen *screen, gboolean *changed) RROutput primary_output = None; RROutput first_output = None; int i; - gboolean randr12_compat = FALSE; int old_primary; if (!x11_display->have_randr13) @@ -633,9 +615,6 @@ init_randr13 (GdkScreen *screen, gboolean *changed) XRROutputInfo *output_info = XRRGetOutputInfo (x11_screen->xdisplay, resources, output); - /* Non RandR1.2+ X driver have output name "default" */ - randr12_compat |= !g_strcmp0 (output_info->name, "default"); - if (output_info->connection == RR_Disconnected) { XRRFreeOutputInfo (output_info); @@ -716,17 +695,7 @@ init_randr13 (GdkScreen *screen, gboolean *changed) XRRFreeScreenResources (resources); - if (randr12_compat) - { - for (i = 0; i < x11_display->monitors->len; i++) - { - GdkX11Monitor *monitor = x11_display->monitors->pdata[i]; - if (monitor->remove) - gdk_display_monitor_removed (display, GDK_MONITOR (monitor)); - } - g_ptr_array_remove_range (x11_display->monitors, 0, x11_display->monitors->len); - return FALSE; - } + /* Which usable multihead data is not returned in non RandR 1.2+ X driver? */ for (i = x11_display->monitors->len - 1; i >= 0; i--) { @@ -826,7 +795,7 @@ init_no_multihead (GdkScreen *screen, gboolean *changed) gdk_screen_get_height (screen)); g_object_notify (G_OBJECT (monitor), "workarea"); gdk_monitor_set_physical_size (GDK_MONITOR (monitor), - gdk_screen_get_height_mm (screen), + gdk_screen_get_width_mm (screen), gdk_screen_get_height_mm (screen)); gdk_monitor_set_scale_factor (GDK_MONITOR (monitor), x11_screen->window_scale); -- 2.30.2